package com.kaifamiao.category;

/**
 * 根据Java语言规范中的分类，可以将内部类分为:
 * 1、嵌套类
 * 2、内部类( 我们建议使用 实例内部类 来与其它内部类加以区分 )
 * 3、局部类
 * 4、匿名类
 */
public class Computer {
	
	// 嵌套类(Nested Classes): 被 static 修饰的成员内部类
	static class Brand {
		
	}
	
	// 实例内部类: 没有被 static 修饰的成员内部类
	class Mainboard {
		
	}
	
	static interface Flyable {
		void fly();
	}
	
	public void test() {
		// 局部内部类(Local Classes): 不是直接声明在某类体中的、不属于类的成员
		class PowerSwitch {
			void on() {
				
			}
			void off() {
				
			}
		}
		/** 对于局部类来说，只能在声明该类的代码块中创建该类的实例 **/
		PowerSwitch ps = new PowerSwitch();
		ps.on();
		ps.off();
	}
	
	public void show() {
		// 匿名内部类(Anonymous Classes): 形式上看连名字都没有的类
		/** 匿名类一经声明就会立即创建实例(该类就使用一次) **/
		Flyable f = new Flyable() {
			@Override
			public void fly() {
				// TODO Auto-generated method stub
				
			}
		};
		f.fly();
	}

}
